/*
编写一个函数，以字符串作为输入，反转该字符串中的元音字母。

示例 1:

输入: "hello"
输出: "holle"
示例 2:

输入: "leetcode"
输出: "leotcede"
说明:
元音字母不包含字母"y"。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/reverse-vowels-of-a-string
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/

#include <iostream>
#include <string>
#include <set>

using namespace std;

class Solution {
public:
    string reverseVowels(string s) {
        set<char> vowel{'a','e','i','o','u','A','E','I','O','U'};
        int len=s.size();
        int i=0,j=len-1;
        char tmp=' ';
        while(i<=j)
        {
            bool a=vowel.find(s[i])!=vowel.end();
            bool b=vowel.find(s[j])!=vowel.end();
            if(a&&b)
            {
                tmp=s[i];
                s[i]=s[j];
                s[j]=tmp;
                i++;
                j--;
            }
            if(!a)
            {
                i++;
            }
            if(!b)
            {
                j--;
            }
        }
        return s;
    }
};

int main()
{
    Solution s;
    string str="leetcode";
    cout<<s.reverseVowels(str);
}